Software Glossary
A
Assembly Language – A CPU-specific software language that closely mirrors the machine operating codes of the CPU chip-set. Because the software is non-portable among different CPUs, assembly language usage is generally limited to processes that integrate hardware devices within the computer system.
Assembler – A software application that inputs assembly language programming source code and creates machine-executable, linkable object code files and/or executable programs.
Asynchronous – Unpredictable timing. Software events are random events. This is contrasted with synchronous or periodic events which are accurately timed based upon the system clock.
Automatic Variable – This is a temporary variable that is created, used and deleted during program execution for a particular purpose. Automatic variables are related to the scope of an executing block of software code. These temporary variables are allocated from program stack and are reentrant.
B
Background Task – A command interpreter system operation that executes independently of the command interpreter, this allows the user to perform other tasks with the command interpreter without waiting for the completion of the command. The use of background tasks enables parallel command interpreter operations.
Blocking – This is a state of a process while waiting for a specific event notification prior to resuming execution. The reference is most often used in conjunction with I/O operations. It is contrasted by the term Non-Blocking I/O or polling.
C
C or C-language – A high-level language created at Bell Laboratories. The language is quite popular because of its portability among many different computer systems.
C++ - A high-level language that is compatible with C-language. C++ extends the functional capability of C as a framework into the realm of Object programming.
Child Process – Is a new process created through the execution of another process. The creating process is called the Parent Process.
Client/Server Architecture – When processing operations are shared or distributed between two (or more) applications, software developers label this architecture as a client/server design. The client-server architecture is quite flexible; it is effective within a single computer system as well as between multiple, networked computers. An Internet Browser is an excellent example of client/server computing. An Internet web server provides the data and the data structure for the client browser. The browser client receives the information and formats the data for presentation to the browser user. The processing operation, therefore, is split between the client and server. Furthermore, the server application can support multiple browser clients, thus optimizing the generally superior processing capabilities of the server application. Perfectly distributed client/server architecture optimizes the utilization of both the client and server components.
Clock Interrupts – This is a special hardware interrupt generated by the computer system’s internal clocking hardware. Unlike hardware device interrupts, a clock interrupt is a periodic event that occurs at precise, periodic time units. A computer’s time-of-day clock is maintained through clock interrupts. The clock interrupt is also used by process scheduling software to execute periodic or time-based processes. A special time queue containing periodic processes and their attributes is maintained by kernel software. When a periodic process requires scheduling, the kernel moves the task to the scheduling queue for execution.
Command Interpreter – System software that handles the input and output of the user interface, e.g. console I/O.
Compiler – A software program that inputs high-level source code, e.g. C, C++, Java, and generates appropriate object code for a particular target CPU.
Concurrent Processing – An operating system that provides core services that enable multiple computer software programs to execute simultaneously---or more accurately stated, to appear to run simultaneously. The appearance of concurrency is achieved by the rapid, almost imperceptible, sharing of CPU processor time. Processor sharing can be achieved using a variety of techniques: sharing can be time-based, priority-driven, and/or event-driven.
Core Dump – When a process terminates unexpectedly and abnormally, the operating system may display information about the termination. The information is often used by software engineers to locate the faulty processing which generated the abnormal termination. A core dump will generally contain CPU register information which can pinpoint the software instruction that triggered the abnormal event.
CPU – This is an acronym for Central Processing Unit. The CPU is the core hardware that controls and manages a computer system. CPUs are designed and manufactured by silicon chip vendors.
Critical Section – This is a name given to a section of software that requires complete execution---from the beginning of the section until the end---without interruption. A critical section of software maintains sole ownership of the CPU forcing all other processes to suspend execution until the completion of the critical section.
Cross-Compiler - A software program that inputs high-level source code, e.g. C, C++, Java, and generates appropriate object code for a one or more target CPUs. A cross compiler allows the software engineer to create executables for a variety of computer systems from a single host development environment.
D
Daemon – A system background task that provides specific services for applications and users. A printer daemon, for example, manages the stream of printing operations.
Directory – A file system is a collection of classified nodes with data contained in files within a hierarchal, tree-like structure. A directory is a common name for a node within the file system.
Disassembler – A disassembler application reads computer machine or object code and reconstructs the assembly language source code. Disassembler applications are often part of debug and integration tool sets provided by RTOS and chip manufacturers.
E
Embedded Operating Systems – These are small operating systems that are permanent residents of specific hardware devices that provide RTOS functionality for specialized engineering applications. Embedded operating systems generally are self-contained, self-loading, self-activating software systems. When embedded on board-level devices, these systems off-load functions from the main Operating system providing significant performance improvement using the principles of distributed processing.
Environment Variables – These are system-wide or user-wide variables used to customize the working environment. For example, the PATH environmental variable sets the default directory for user programs
Exclusive Access – There are certain resources in computer systems that require temporary sole ownership for effective managed usage in multi-user or multiprogramming environment. To ensure uninterrupted operation, software applications use locks to gain ownership of a resource. Once the operation has been completed, the exclusive access obtained is released through an unlocking mechanism, thus allowing others to obtain and lock the resource.
Executable Software – This is the final state of a software application. After the software has been written, assembled and/or compiled, the output object modules are joined together into an executable program that can run as an application on a target CPU.
Executive Software – Another name used to describe an operating system. Most often used in conjunction with RTOS software.
F
Fork – A UNIX-specific method to create a new process. The new process created is a mirror image of the parent process. Process-specific identifiers enable the single software source to provide different process execution paths for the creator (“Parent Process”) and the creation (“Child Process”).
FORTRAN – Another high-level language developed for scientific applications. The strength of language is focused in mathematical operations. FORTRAN provides precise floating-point calculations for highly technical applications.
FIFO – an acronym for “first in, first out” used most often in describing the behavior of a software queue. A queue is a dynamic table used most often for temporary storage of processes or data. A FIFO queue ensures that the long waiting (“first in”) queue client is serviced at the highest priority (“first out”).
File System – This is the structure of directories and individual files within a target media. File systems are generally constructed as a tree structure that originates from a single start node with cascading branches of directories contains individual files of data.
G
GMT – An acronym for Greenwich Mean Time. GMT is used to synchronize local time with the global standard. Time is measured by full and partial time zones before or after GMT.
H
Hardware Interrupts – Is an electrical signal generated by a hardware device linked to the computer that causes and asynchronous event which suspends current executing process. During the interruption a special software process, the Interrupt Service Routine (ISR), is called to satisfy the service needs of the interrupting device. Upon conclusion of the Interrupt Service Routine, the processing environment of the suspended process is restored and the execution of the task is resumed from the point of interruption.
I
IDE – An acronym for Integrated Development Environment. An IDE is a software application for engineers that unify many of the engineering tasks during the software development cycle. An IDE typically provides editing software for source code development, access to assemblers and/or compilers for code generation, linkers for creating executable code from object modules and debugging tools for program validation and correction. Visual C/C++ from Microsoft is an example of this type of development environment.
I/O – An acronym for Input/Output. Inputs are parameters given to process. Outputs are the results of processing. The term I/O has more distinct meaning when used in conjunction with different computer components. Device I/O is the data received and/or received during its execution. Console I/O is the character stream of inputs and outputs created by the computer system user. There are many other related context-specific I/O meanings.
Interrupts – Is an electrical signal generated by a hardware device, the processor clock, or, in some cases, a specific software instruction that forces suspension of the current executing process. During the interruption a special software process, the Interrupt Service Routine (ISR), is called to satisfy the service needs of the interrupting device. A CPU will satisfy the needs of multiple concurrent interrupts through by interrupt identifier and/or the predefined priority established. Upon conclusion of the interrupt servicing, the processing environment of the suspended process is restored and the execution of the task is resumed from the point of interruption.
IPC – An acronym for Inter-Process Communication. IPC is a collection of software components that allow multiple processes to coordinate and synchronize their activities and share resources. Examples of IPC mechanisms include semaphores and messaging. The key performance dictate among IPC mechanisms is that individual processes yield CPU time while waiting on notifications and computer resources, thus allowing non-blocked processes to execute.
J
Java – A high-level language developed by SUN Microsystems; Java language has become an important part of the development of Internet-based applications.
K
Kernel Software – a term most often applied to the low-level services of an operating system. The term is popular in the UNIX community.
L
LIFO – an acronym for “last in, first out” used most often in describing the behavior of a software queue. A queue is a dynamic table used most often for temporary storage of processes or data. A LIFO queue gives priority (“first out”) to the most recent queue client (“last in”). The most common application of a LIFO is seen in the operation of a CPU stack.
M
Monitor – A term used to describe the act of observation within a computer system. A monitor software program collects system performance information and presents the information to the operator of the system. In the past, the term has been used as a synonym for an operating system.
Multiprocessor Environments – Many computers have more than one CPU within the system. Multiprocessor computers speed up system performance by allowing parallel processing of computer instructions. Multiprocessor computers challenge the software engineer
Multi-Programming – A generic term for an Operating System that supports multiple computer users and/or multiple concurrent processes.
N
Non-Blocking – This is a term used to describe the behavior of a process that does not suspend operations while waiting for input from another process or device. It is often used in conjunction with a polling process. The high bandwidth demands of a non-blocking process are a serious design concern for software developers.
O
Object Code – Object code is the output of compilers and assemblers. Object code is CPU-specific modules. The output object code modules are linked and assigned absolute addresses by a Linker application to create a complete executable software program.
Object-oriented Programming – This is software development model that organizes resources as entities with distinct data manipulation and programming interfaces. Resources are encapsulated and protected by strict data access prohibitions that hide the internal structure and operations of the resource object from clients. The encapsulation attribute of object-oriented programming provides the additional benefit of incremental development and code reuse.
OOP – See Object-oriented Programming
Operating System – The core software that manages and controls the execution of software applications, computer resources and communication with internal and external devices. Familiar operating systems include UNIX (many flavors), Microsoft Windows and specialized real-time operating systems (RTOS) for specialized engineering applications.
P
Paging – A technique used in a virtual memory scheme which enables the computer system to extend its hardware memory limits. Memory maps of processors and data are divided into manageable-sized memory units which are stored on fixed media devices. As needed, these memory units or pages are swapped into and out of the actual computer system memory. An effective paging system is transparent to software applications, these programs/ execute as fully resident in the computer memory.
Parent Process – A parent process is a process that creates one or more new processes during its execution. The created process is known as the Child Process.
Peripherals – (See Peripheral Device).
Peripheral Device – Any hardware connected to a computer system is considered a peripheral device. More obvious examples of peripherals include mice, keyboards, CD-ROM and DVD players and wireless interfaces.
Polling – A process uses polling to discern client state changes by the continual inquiry of multiple clients. Polling processes run in a non-blocking mode, i.e. they do not wait for a specific event for execution but run continuously. Because polling processes are not event-driven, they can consume large amounts of CPU time. For this inefficiency, the use of polling processes is avoided except in the most extreme circumstances.
Privileged Mode – Privileged mode means a process has full access to all system resources. Operating systems’ kernel software operated in this processing mode.
Process – An independently executing software task that shares CPU and/or computer resources with other concurrent executing tasks. Processes can be kernel processes, processes generated by the application or processes generated by other executing applications.
Process ID – the identifier used by the operating system to distinguish among the processes lad in the system and eligible for execution.
Process States – A process running in a concurrent operational environment may enter many attribute states during the lifetime of the process. The process may be the executing task, the process may be waiting in a scheduling queue waiting for execution, temporarily suspended waiting for reactivation, waiting upon a shared resource, waiting in a time-based queue waiting for periodic scheduling or any other operating system managed attribute state. The effective use of process states ensures the highest performance of the computer system and utilization of its resources.
Program – A software application composed on one or more processes that provide a desired functionality. A sequential program assumes full ownership of the host CPU and executes with little concern for its impact upon shared resources. Parallel processing program shares computer resources with other executing applications or processes using software mechanisms that ensure effective utilization of resources among the concurrent processing entities.
Program Counter – Within a CPU, there are a group of registers that are used to maintain program control and management. A program register is a particular CPU register that specifies the next executable computer instruction. Kernel software is responsible for managing the contents of the program counter in a multi-processor environment. During context switches, the kernel software must save and subsequently restore the program counter (as well as the other CPU registers) for each swapped process.
Program Image – This is the name given to the copy of the software program after it has been moved from storage media to the computer for execution.
Q
Queue – A queue is a software construct used by software engineers to manage process and data elements. Queues are dynamic tables; they expand and contract as necessary. They are most often used to manage the utilization of computer resources.
R
RPC – An acronym for Remote Procedure Call. RPC is a software mechanism used in client/server architectural models. A RPC is initiated by a client process for a remote server application. The client process blocks after making the call while the server application processes the request. Upon completion of the RPC request, the client process is signaled and the RPC transaction is completed. The RPC mechanism, therefore, is a sequential operation.
RTOS – A generic acronym for Real Time Operating System. RTOS most often refers to small, fast operating systems dedicated to highly specific engineering projects. RTOS are often embedded into interface boards to provide low-level I/O with target devices that communicate with host operating systems through hardware buses that act as a receptacle for standardized board-level products.
S
Shell – This is the name given to the text command interpreter under UNIX. The shell runs as a process that reads input user text and executes the commands. There are several different command processors available, e.g. C-shell, Korn Shell.
Shell Programming – These are text files containing one or more shell commands that are executed in sequence. Shell programming is an effective mechanism to automate frequently executed multiple command interpreter instructions.
Signals – A signal is a software generated event used for inter-process communication. A process often uses a signal to notify a waiting process that a system resource or data is now available to other concurrent processes. Signals are generated by one process and caught by one or more concurrent processes. In UNIX systems, a signal is used in conjunction with the use of inter-process communication semaphores.
Static Variables – These are variables with permanence; unlike automatic variables, their existence persists throughout the lifetime of the executing program. Static variables follow the rules of scope. Global static variables are known to all processes. Local static variables are only known to modular processes.
Suspended
System Calls – These are system functional calls made available to the software engineer to access and utilize kernel processes. System calls provide a consistent and managed interface to kernel operations without jeopardizing the integrity of the operating systems’ core processing.
T
Thread – A thread is another name for a unique software process. Under NetWare, however, a thread is a specific class of task: a program creates processes which in terms creates threads. Under NetWare, therefore, there is a named hierarchy of tasks created. However, the generic thread definition is the most common.
U
UNIX – The name of the original multi-programming, multi-tasking operating system developed by Bell Laboratories. The original operating system has evolved into several distinct varieties.
UDP – An acronym for User Data Protocol. UDP is part of the TCP/IP protocol stack which can be used to generate and receive connectionless packets. Because it is a connectionless protocol, delivery is not guaranteed.
V
Variable – A variable is a basic software development concept. A variable is a named storage location with certain specific attributes, e.g. an integer, a float, etc., and size. The named variable also contains a value based upon its attributes. Variables are manipulated by name during source code development and by memory address during program execution.
Virtual Memory – Virtual memory satisfies the increased demand for computer main memory by leveraging mapping techniques that use storage media as a substitute for the limits of main memory. By using process swapping or paging techniques, computer main memory can be used as a receptacle for memory maps. Stored memory executables and data are swapped in and out of the computers main memory on a need basis. The main memory, therefore, can support addressing far beyond its fixed memory hardware.
W
Well-known Address – (See Well-known Port)
Well-known Port – A well-known port is a pre-assigned I/O interface address that provides a specific service. The predefined port service negates the need for service advertising. The UNIX port for ftp services is always available at TCP/IP port number 21. Knowing the IP address of any server, therefore, also reveals the service access port or address of a well-known service.
X
XDR – This is an acronym for External Data Representation. XDR representation is standard method for representing data among different computer systems in a machine independent format. It is most commonly used with RPC calls to ensure accurate data representation.
Y
Z
Z-80 / Z-8000 – These are two early 8-bit and 16-bit CPUs built by Zilog. The Z-80 CPU was a favorite chip choice of many early computer manufacturers.
Zombie Process – This is a name for a UNIX process that continues to exist after its parent process has exited. Zombie processes, therefore, are orphan processes. Orphan processes are eventually “adopted” by the UNIX init process which provides the substitute ownership so that the Zombie process can exit cleanly.